Checking Software Components
نویسندگان
چکیده
We propose a formal approach for adding fault detection to software. An assertion-based formalism is used to represent specifications and verify completeness and consistency. This specifcation is used to generate aflowgraph, which is used to construct an exemplar-path tree. This representation is then used to generate an input set to exercise and verify the implementation. Previous software fault-tolerance (SFT) techniques emphasized algorithm-based fault tolerance (ABFT) which focused on detecting hardware faults that corrupted data structure contents. We propose a method that also detects hardware faults, which cause program flow errors. Our technique embeds two types of software checks. The first is based on the ABFT techniques described in the literature. The second type of check is used to detect faults that cause program flow errors. The exemplar-path tree provides information that can be used to predict a future program location, given the current location. During execution, program locations are recorded, along with expected locations, as determined from the exemplar-path tree. This information then is used to verifr that the future location is executed as expected. Hardware fault coverage has been estimated through experiments with the fault injection tool, SOFIT. Faults of differing durations were injected into memory, address bus, data bus, and CPU registers. The data presented, demonstrate the effectiveness of the method for detecting hardware faults.
منابع مشابه
Specification and Generation of Environment for Model Checking of Software Components
Model checking of isolated software components is inherently not possible because a component does not form a complete program with an explicit starting point. To overcome this obstacle, it is typically necessary to create an environment of the component which is the intended subject to model checking. We present our approach to automated environment generation that is based on behavior protoco...
متن کاملComponent Based Development - Where is the Place for Formalization ?
A software component has a contract that specifies its properties and thus define conditions for its use. The contract is an obvious object for formalization. It could assist in conformance checking for manufactured components and in checking consistent use of them in a concrete system. However, our experience with development of a complex, software intensive system with heterogeneous component...
متن کاملModel-checking Driven Black-box Testing Algorithms for Systems with Unspecified Components
Component-based software development has posed a serious challenge to system verification since externally-obtained components could be a new source of system failures. This issue can not be completely solved by either model-checking or traditional software testing techniques alone due to several reasons: 1) externally obtained components are usually unspecified/partially specified; 2)it is gen...
متن کاملOn Self-checking Software Components
Software protection has recently attracted interest from developers. Self-checking software is one of the approaches for software protection. This paper surveys the existing techniques for building self-checking software and presents a taxonomy of the current endeavors. This taxonomy should help the reader to get the global view of the current solution space of self-checking software techniques...
متن کاملCombining Model Learning and Model Checking to Analyze TCP Implementations
We combine model learning and model checking in a challenging case study involving Linux, Windows and FreeBSD implementations of TCP. We use model learning to infer models of different software components and then apply model checking to fully explore what may happen when these components (e.g. a Linux client and a Windows server) interact. Our analysis reveals several instances in which TCP im...
متن کاملCombining Model Learning and Model Checking to Analyze TCP Implementations
We combine model learning and model checking in a challenging case study involving Linux, Windows and FreeBSD implementations of TCP. We use model learning to infer models of different software components and then apply model checking to fully explore what may happen when these components (e.g. a Linux client and a Windows server) interact. Our analysis reveals several instances in which TCP im...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2004